home *** CD-ROM | disk | FTP | other *** search
/ Curio City 7 / CURIO7.bin / mac / NET / World Talk for 68K Mac / WTV151MAC.sea / WorldTALK / KNET.HSC < prev    next >
Text File  |  1996-05-01  |  8KB  |  399 lines

  1. # 修正履歴
  2. # ----------+-----------------------------------------------
  3. # Ver1.0
  4. #
  5. # 外部変数
  6. # LOGINSTATUS -2    接続出来ないで終了
  7. #             -1    エラー発生で終了
  8. #             0     実行中
  9. #             1...  アクセスポイント種別
  10. #
  11. # USERNAME    ユーザーID
  12. # PASSWORD    パスワード
  13. #
  14. 自動ログイン() :
  15. DISPLOGX('スクリプトバージョン:V1.0')
  16.  
  17.  LOGINSTATUS = 0
  18.  ONLINE      = 0
  19.  繰返回数    = 0
  20.  LOGONCOMMAND= 'COPER'
  21.  JUMPCODE    = 'JWWWDIRECT'
  22.  ON_ERROR( エラー発生 )
  23.  MODEMPARAM(コマンド1,コマンド2,ゼロ発信,出力遅延時間,文字遅延,タイムアウト,通信ポート,ダイアル種別,ゼロ発信文字列)
  24.  IF USERNAME == "" | PASSWORD == ""
  25.   HOSTID("USERNAME","PASSWORD")
  26.  END
  27. #使用できる番号を接続グループからさがす
  28.  番号 = 1
  29. 番号検索:
  30.  定義状態 = TELNO(HOSTGROUPNAME,番号,'電話番号','名前','アクセスポイント種別')
  31.  IF 定義状態 == 0
  32.    番号 = 番号 + 1
  33.    IF 番号 > 20
  34.     LOGINSTATUS = -2
  35.     RETURN
  36.    END
  37.    GOTO 番号検索
  38.  END
  39.  DISPTELNO(電話番号,アクセスポイント種別)
  40.  
  41. # オートログインタイムアウトタイマースタート
  42.  STARTTIMER()
  43. # 念のために電話を切る
  44. # DISPSTATE(1)
  45. # ONHOOK()
  46.  
  47. # 回線断の状態にする
  48.  SETLINEOFF()
  49.  
  50.  SETRECTIMEOUT(3000)
  51.  SETCHARDELAY(文字遅延)
  52.  
  53. アクセスポイント巡回:
  54.  IF 番号 > 20
  55.   LOGINSTATUS = -2
  56.   RETURN
  57.  END
  58.  繰返し = 1
  59.  定義状態 = TELNO(HOSTGROUPNAME,番号,'電話番号','名前','アクセスポイント種別','通信速度','BL','SB','PA','XF','E','KA','CI','CO','RC','RW')
  60.  IF 定義状態 == 0
  61.   番号 = 番号 + 1
  62.   GOTO アクセスポイント巡回
  63.  END
  64.  繰返し回数=RC
  65.  SETCOMPARAM( 通信速度, SB, BL, PA, XF, E, KA, CI, CO )
  66.  
  67.  DISPTELNO(電話番号,アクセスポイント種別)
  68.  IF ゼロ発信
  69.   コマンド1 = コマンド1 - 'X4' + 'X3'
  70.  END
  71.  
  72.  DISPSTATE(2)
  73.  WAIT(500)
  74.  
  75.  IF 出力遅延時間 > 0
  76.   WAIT(出力遅延時間*1000)
  77.  END
  78.  
  79.  IF コマンド1 != ""
  80.   SEND(コマンド1)
  81.   受信データ = RECV()
  82.  
  83. OK待ち1:
  84.   受信データ = RECV()
  85.   IF STREXT(受信データ,0,2) != 'OK'
  86.    IF 受信データ == ''
  87.     GOTO OK待ち1
  88.    END
  89.    エラーメッセージ = "モデム初期化コマンド1でエラーが発生しました。\nコマンド("+コマンド1+')'
  90.    GOTO エラーメッセージ表示
  91.   END
  92.  
  93.   IF 出力遅延時間 > 0
  94.    WAIT(出力遅延時間*1000)
  95.   END
  96.  END
  97.  
  98.  IF コマンド2 != ""
  99.   SEND(コマンド2)
  100.   受信データ = RECV()
  101. OK待ち2:
  102.   受信データ = RECV()
  103.   IF STREXT(受信データ,0,2) != 'OK'
  104.    IF 受信データ == ''
  105.     GOTO OK待ち2
  106.    END
  107.    エラーメッセージ = "モデム初期化コマンド2でエラーが発生しました。\nコマンド("+コマンド2+')'
  108.    GOTO エラーメッセージ表示
  109.   END
  110.  
  111.   IF 出力遅延時間 > 0
  112.    WAIT(出力遅延時間*1000)
  113.   END
  114.  END
  115.  
  116.  呼出しATコマンド = 'ATD' + ダイアル種別
  117.  IF ゼロ発信
  118.   DISPLOG('ゼロ発信:'+ゼロ発信文字列)
  119.   呼出しATコマンド = 呼出しATコマンド + ゼロ発信文字列
  120.  END
  121.  呼出しATコマンド = 呼出しATコマンド + 電話番号
  122.  
  123. ホスト呼び出し:
  124.  DISPSTATE(3)
  125.  IF 出力遅延時間 > 0
  126.   WAIT(出力遅延時間*1000)
  127.  END
  128.  SEND(呼出しATコマンド)
  129.  
  130. 着呼確認 :
  131.   受信データ = RECV()
  132.   LEN = STRLEN(受信データ)
  133.   IF LEN == 0
  134.     GOTO 着呼確認:
  135.   END
  136.   $D = STREXT(受信データ,0,4)
  137.   IF $D == 'NO D' 
  138.    DISPLOGX("モデムからの応答:"+受信データ)
  139.    エラーメッセージ = "モデムに電話回線が接続されていないようです。"
  140.    GOTO エラーメッセージ表示
  141.   END
  142.   IF $D == 'DELA' | $D == 'BLAC'
  143.    DISPLOGX("モデムからの応答:"+受信データ)
  144.    エラーメッセージ = "リダイヤル規制です。\n1分以上間隔をおいてください"
  145.    GOTO エラーメッセージ表示
  146.   END
  147.   IF $D == 'ERRO'
  148.    DISPLOGX("モデムからの応答:"+受信データ)
  149.    エラーメッセージ = "ダイヤルコマンドでエラーが発生しました。\nダイヤルコマンド("+呼出しATコマンド+')'
  150.    GOTO エラーメッセージ表示
  151.   END
  152.   IF $D == 'BUSY' | $D == 'NO C' | $D == 'HAND' | $D == 'OK'
  153.    DISPLOGX("モデムからの応答:"+受信データ)
  154.    GOTO ログイン失敗
  155.   END
  156.   IF STREXT(受信データ,0,7) != 'CONNECT'
  157.    GOTO 着呼確認
  158.   END
  159.  
  160.  ONLINE = 1
  161. # DIAL.LOGにホスト名、電話番号、"CONNECT XXXX"を保存
  162.  PUTCONNECTLOG(名前,電話番号,受信データ)
  163.  
  164.  DISPSTATE(4)
  165.  WAIT(2000)
  166.  
  167. #LOGIN PROCESS
  168.  SEND(LOGONCOMMAND)
  169. ログオンコマンド確認 :
  170.  受信データ=RECV()
  171.  LEN=STRLEN(受信データ)
  172.  POS=STRPOS(受信データ,'USER ID  :')
  173.  IF LEN == POS
  174.   POS=STRPOS(受信データ,'サービスを終了')
  175.   IF LEN != POS
  176.    エラーメッセージ=受信データ
  177.    GOTO エラーメッセージ表示
  178.   END
  179.   POS=STRPOS(受信データ,'ただ今')
  180.   IF LEN != POS
  181.    エラーメッセージ=受信データ
  182.    GOTO エラーメッセージ表示
  183.   END
  184.   POS=STRPOS(受信データ,'システム調整')
  185.   IF LEN != POS
  186.    エラーメッセージ=受信データ
  187.    GOTO エラーメッセージ表示
  188.   END
  189.   POS=STRPOS(受信データ,'PLEASE')
  190.   IF LEN != POS
  191.    エラーメッセージ=受信データ
  192.    GOTO エラーメッセージ表示
  193.   END
  194.   POS=STRPOS(受信データ,'err')
  195.   IF LEN != POS
  196.    エラーメッセージ='このアクセスポイントではWorldTALKを使用できないようです。別のアクセスポイントを選択してください。'
  197.    GOTO エラーメッセージ表示
  198.   END
  199.   POS=STRPOS(受信データ,'NO C')
  200.   IF LEN != POS
  201.    エラーメッセージ='回線が切断されました。もう一度接続してみてください。'
  202.    GOTO エラーメッセージ表示
  203.   END
  204.   GOTO ログオンコマンド確認
  205.  END
  206.  
  207.  SEND(USERNAME)
  208.  RECV()
  209.  
  210. ユーザー名確認:
  211.  受信データ=RECV()
  212.  IF 受信データ == ' ' | 受信データ == ''
  213.   GOTO ユーザー名確認
  214.  END
  215.  IF STREXT(受信データ,0,12) == 'IDまたはPASS'
  216.    エラーメッセージ="ユーザIDを確認してください"
  217.    GOTO エラーメッセージ表示
  218.  END
  219.  
  220.  SEND(PASSWORD+','+JUMPCODE)
  221.  
  222. ログインチェック :
  223.  受信データ = RECV()
  224.  IF 受信データ == '' | 受信データ == ' '
  225.   GOTO ログインチェック
  226.  ELSE
  227.   LEN=STRLEN(受信データ)
  228.   IF STREXT(受信データ,0,12) == 'IDまたはPASS'
  229.     エラーメッセージ='パスワードを確認してください'
  230.     GOTO エラーメッセージ表示
  231.   END
  232.  END
  233.  
  234. ログインメッセージ確認1:
  235.  LEN = STRLEN(受信データ)
  236.  POS=STRPOS(受信データ,'回線を切って')
  237.  IF POS != LEN
  238.    エラーメッセージ='二重ログインしているようです。'
  239.    GOTO エラーメッセージ表示
  240.  END
  241.  POS = STRPOS(受信データ,'プロファイル')
  242.  IF POS != LEN
  243.   GOTO 正常終了
  244.  ELSE
  245.   POS = STRPOS(受信データ,'リターンキーを押して下さい')
  246.   IF POS != LEN
  247.    SEND('')
  248.    受信データ=RECV()
  249.    GOTO ログインメッセージ確認1
  250.   END
  251.   POS = STRPOS(受信データ,'お知らせを')
  252.   IF POS != LEN
  253.    SEND('N')
  254.    GOTO WWWお知らせ終了
  255.   END
  256.   POS = STRPOS(受信データ,'WWW')
  257.   IF POS != LEN
  258.    GOTO WWWサービス
  259.   END
  260.   POS = STRPOS(受信データ,'コマンド=')
  261.   IF POS != LEN
  262.    SEND('N')
  263.    GOTO WWWお知らせ終了
  264.   END
  265.   CHECKMESSAGE(受信データ)
  266.   受信データ=RECV()
  267.   GOTO ログインメッセージ確認1
  268.  END
  269.  
  270. 正常終了 :
  271. # プロファイルを修正
  272.  SEND('N')
  273.  RECV()
  274. WWWお知らせ :
  275.  受信データ = RECV()
  276.  IF STRPOS(受信データ,'お知らせを') != STRLEN(受信データ)
  277.   SEND('N')
  278.   GOTO WWWお知らせ終了
  279.  ELSE
  280.   CHECKMESSAGE(受信データ)
  281.   GOTO WWWお知らせ
  282.  END
  283. WWWお知らせ終了:
  284.  
  285. WWWサービス :
  286.  受信データ = RECV()
  287.  IF STRPOS(受信データ,'番号またはコマンド') != STRLEN(受信データ)
  288.   SEND('2')
  289.   RECV()
  290. TIMEOUTCHK:
  291.   受信データ=RECV(5)
  292.   IF 受信データ == ''
  293.     GOTO TIMEOUTCHK
  294.   END
  295.   IF 受信データ != '@TIMEOUT'
  296.    エラーメッセージ=受信データ
  297.    GOTO エラーメッセージ表示
  298.   END
  299. # 製品番号を出力
  300.   WAIT(3000)
  301.   SENDVERSION()
  302.   STATUS = GETMESSAGE()
  303.   IF STATUS != 1 
  304.     エラーメッセージ="バージョンチェックでエラーが発生しました。メッセージを確認してください。"
  305.     GOTO エラーメッセージ表示
  306.   END
  307.   SEND(USERNAME)
  308.   RECV()
  309.   GOTO WWWサービス終了
  310.  ELSE
  311.   GOTO WWWサービス
  312.  END
  313. WWWサービス終了:
  314.  
  315.  SETLINEON()
  316.  LOGINSTATUS = アクセスポイント種別
  317.  FLUSHPORT()
  318.  RETURN
  319.  
  320. ログイン失敗 :
  321.  IF ONLINE == 1
  322.   DISPSTATE(1)
  323.   ONHOOK()
  324.   ONLINE = 0
  325.  END
  326.  IF 繰返し < 繰返し回数
  327.   繰返し = 繰返し + 1
  328.   DISPLOGX('繰返し:'+STRING(繰返し)+'回目')
  329.   IF RW > 0
  330.    WAIT(RW*1000)
  331.   END
  332. # オートログインタイムアウトタイマースタート
  333.   STARTTIMER()
  334.   GOTO ホスト呼び出し
  335.  ELSE
  336.   番号 = 番号+1
  337.   DISPLOGX("次の電話番号へ")
  338. # オートログインタイムアウトタイマースタート
  339.   STARTTIMER()
  340.   GOTO アクセスポイント巡回
  341.  END
  342.  
  343. エラーメッセージ表示:
  344.  IF ONLINE == 1
  345.   DISPSTATE(1)
  346.   ONHOOK()
  347.  END
  348.  MESSAGEBOX(エラーメッセージ)
  349.  LOGINSTATUS = -1
  350. END
  351.  
  352. エラー発生() :
  353.  MESSAGEBOX("エラー発生"+_ERR_C+":"+STRING(_ERR_D))
  354.  IF ONLINE == 1
  355.   DISPSTATE(1)
  356.   ONHOOK()
  357.  END
  358.  LOGINSTATUS = -1
  359. END
  360.  
  361. CHECKMESSAGE(受信データ) :
  362.   DISPLOG(受信データ)
  363.   PUTLOG(受信データ)
  364.   RETURN 0
  365. END
  366.  
  367. GETMESSAGE() :
  368. # \MSGSを受信
  369. MSGS:
  370.   DATA = RECV()
  371.   LEN = STRLEN(DATA)
  372.   IF STRPOS(DATA,'MSGS') == STRLEN(DATA)
  373.    GOTO MSGS
  374.   END
  375.   INFOMSG = ''
  376. # \MSGEを受信
  377. MSGE:
  378.   DATA = RECV()
  379.   LEN = STRLEN(DATA)
  380.   IF STRPOS(DATA,'MSGE') == STRLEN(DATA)
  381.    IF INFOMSG != ''
  382.      INFOMSG = INFOMSG + "\n" + DATA
  383.    ELSE
  384.      INFOMSG = DATA
  385.    END
  386.    DISPLOG(DATA)
  387.    PUTLOG(DATA)
  388.    GOTO MSGE
  389.   END
  390.   DATA = RECV()
  391.   IF DATA != 'OK'
  392.    DISPSTATE(1)
  393.    ONHOOK()
  394.    MESSAGEBOX( INFOMSG )
  395.    RETURN 0
  396.   END
  397.  RETURN 1
  398. END
  399.